Итак, меню у нас есть, а вот как обрабатывать события этого меню? Давайте посмотрим код, который умеет это делать.
using System;
using System.Windows.Forms;
using System.Drawing;
class MyForm : AppForm
{
public static void Main()
{
Application.Run(new MyForm());
}
}
class AppForm : Form
{
public AppForm()
{
MainMenu mnuFileMenu = new MainMenu();
this.Menu = mnuFileMenu;
MenuItem MenuItemFile = new MenuItem("&File");
MenuItem MenuNew = new MenuItem("New",new System.EventHandler(this.MenuNew_Click));
MenuItemFile.MenuItems.Add(MenuNew);
MenuItemFile.MenuItems.Add("Open");
MenuItemFile.MenuItems.Add("Save");
MenuItemFile.MenuItems.Add("Exit");
MenuItem MenuItemEdit = new MenuItem("&Edit");
MenuItemEdit.MenuItems.Add("Copy");
MenuItemEdit.MenuItems.Add("Paste");
mnuFileMenu.MenuItems.Add(MenuItemFile);
mnuFileMenu.MenuItems.Add(MenuItemEdit);
MenuItem MenuItemEditExt = new MenuItem("From File");
MenuItemEditExt.MenuItems.Add("In File");
MenuItemEditExt.MenuItems.Add("To File");
MenuItemEdit.MenuItems.Add(MenuItemEditExt);
}
private void MenuNew_Click(Object sender, EventArgs e)
{
MessageBox.Show("Menu New");
}
}
Вся суть обработки находится в коде:
MenuItem MenuNew = new MenuItem("New",new System.EventHandler(this.MenuNew_Click));
MenuItemFile.MenuItems.Add(MenuNew);
Мы создали класс MenuItem и в этом класс при создании указали не только название функции на и указали какая функция будет производить обработку сообщений от этого класса.
new System.EventHandler(this.MenuNew_Click));
Ну и позже описали саму функцию.
private void MenuNew_Click(Object sender, EventArgs e)
{
MessageBox.Show("Menu New");
}
Идти по такому длинному пути совсем не обязательно, намного проще указать обработчик при добавлении пункта меню.
MenuItemFile.MenuItems.Add("Open",new System.EventHandler(this.MenuOpen_Click));
Ну и саму функцию обработки написать что ли.
private void MenuOpen_Click(Object sender, EventArgs e)
{
MessageBox.Show("Menu Open");
}
Вообщем вывод. При создании меню кроме имени нужно указывать еще и функцию обработки события. Приложение реагирует на меню.
